#include <iostream>
#include <fstream>
#include <list>
#include <stdlib.h>
#include <string.h>
#include <iconv.h>

#include "def.h"

using namespace std;

int main(int argc, char* argv[])
{
    ifstream file;
    char tmp[2048];
    char c_hangul[2048];
    char *putf, *phan;
    int i, ret;
    size_t iutf, ihan;
    iconv_t id;

    //setlocale(LC_ALL, "");
    //putenv("LANG=ko_KR.UTF-8");

    // 인자의 수가 2가 아니면 에러 표시
    if(argc != 2)
    {
        cout << "Error : 전달 인자의 개수가 2가 아닙니다." << endl;
        return EXIT_FAILURE;
    }

    // 파일 열기
    file.open(argv[1], ios::in);
    if( !(file.is_open() ) )
    {
        cout << argv[1] << " : 파일 열기 실패" << endl;
        return EXIT_FAILURE;
    }

    id = iconv_open("CP949", "UTF-8");

    while(file.good())
    {
        // 한 글자씩 읽어온다.
        i = 0;

        for(i = 0; (file.good() ) && (i < 2048); i++)
        {
            tmp[i] = file.get();
        }

        putf = tmp;
        phan = c_hangul;

        iutf = strlen(tmp);
        ihan = 2048;

        dp("in : %d, out %d\n", (int)iutf, (int)ihan);

        ret = 0;
        ret = iconv(id, &putf, &iutf, &phan, &ihan);
        if(ret)
        {
            dp("\niconv error : %d\n", ret);
            dp("iutf = %d, ihan = %d\n", (int)iutf, (int)ihan);
        }

        *phan = 0;

        dp("UTF-8 : %s\n", tmp);
        dp("CP949 : %s\n", c_hangul);
    }

    if(file.is_open())
    {
        file.close();
    }

    iconv_close(id);

    return 0;
}
